package com.example.administrator.activity.service;

import android.content.ComponentName;
import android.content.Intent;
import android.content.ServiceConnection;
import android.os.IBinder;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;

import com.example.administrator.activity.R;

public class Setvice2Activity extends AppCompatActivity implements View.OnClickListener {
    Button btn_open, btn_close;
    MyConn myconn;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_setvice2);
        btn_open = findViewById(R.id.service2_btn_open);
        btn_close = findViewById(R.id.service2_btn_close);
        btn_open.setOnClickListener(this);
        btn_close.setOnClickListener(this);
    }

    @Override
    public void onClick(View v) {
        Intent intent = new Intent(Setvice2Activity.this, MyService2.class);
        switch (v.getId()) {
            case R.id.service2_btn_open:
                /*
                绑定服务:
                传递3个参数：参数1：意图（从哪个Activity绑定哪个Service）
                参数2：ServiceConncention类型，用于实现与服务的连接（交互）
                参数3：Int类型，标记，BIND_AUTO_CREATE，绑定自动创建服务（英译中）*/
                myconn = new MyConn();
                bindService(intent, myconn, BIND_AUTO_CREATE);

                Toast.makeText(this, "服务绑定", Toast.LENGTH_SHORT).show();
                break;
            case R.id.service2_btn_close:
                /*
                解绑服务
                 */
                if (myconn != null) {
                    unbindService(myconn);
                    myconn = null;
                    Toast.makeText(this, "服务解绑", Toast.LENGTH_SHORT).show();
                }

                break;
            default:
                break;
        }
    }

    /**
     * 自定义内部类MyConn，实现ServiceConnection借口
     * 用于服务的链接（交互）
     */
    class MyConn implements ServiceConnection {
        /**
         * 成功绑定服务（跟服务连接上了）之后调用该方法
         *服务交互通过，TBinder service
         * @param name
         * @param service
         */
        @Override
        public void onServiceConnected(ComponentName name, IBinder service) {
            Log.v("myService", "Activity的onServiceConnected");
        }

        @Override
        public void onServiceDisconnected(ComponentName name) {

        }
    }

}
